import random
from PIL import Image, ImageDraw, ImageFont, ImageFilter


'''
Image 处理图片
ImageDraw 处理画笔
ImageFont 处理字体
ImageFilter 处理滤镜
'''
'''
项目步骤：
1、定义一张图片
2、创建画笔
3、绘制线条和点
    绘制线
    绘制点
4、绘制文字
    文字是随机产生的
    个数是一定的
5、定义扭曲参数
6、使用滤镜
    添加滤镜
    进行扭曲
'''
# 定义图片
img = Image.new('RGB', (150, 50), (255, 255, 255))
'''
参数1：采用RGB颜色模式
参数2：图片大小
参数3：具体颜色图片
'''
# 生成画笔
draw = ImageDraw.Draw(img)
# 绘制线
for i in range(random.randint(1, 10)):
    draw.line(
        # 绘制线条时每条线有两个点，用x,y两个值来确定位置
        [
            (random.randint(1, 150), random.randint(1, 150)),
            (random.randint(1, 50)), random.randint(1, 50)
        ],
        fill=(0, 0, 0)

    )
# 绘制点
for p in range(1000):
    draw.point(
        [
            random.randint(1, 150),
            random.randint(1, 150)
        ],
        fill=(0, 0, 0)
    )
# 定义要生成随机数的字母和数字
font_list = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
c_chars = ''.join(random.sample(font_list, 5))  # random.sample()在指定列表随机取出指定个数元素
# 绘制字体（先定制字体）
font = ImageFont.truetype('simsun.ttc', 26)
draw.text((5, 5), c_chars, font=font, fill='green')
'''
参数1：代表文字的位置， 距离上和左的位置
参数2：代表文字的内容
参数3：字体
参数4：字体颜色
'''
# 定义扭曲的参数
params = [1 - float(random.randint(1, 2))/100,
          0,
          0,
          0,
          1 - float(random.randint(1, 2))/100,
          float(random.randint(1, 2))/500,
          0.001,
          float(random.randint(1, 1))/500
          ]
img = img.transform((150, 50), Image.PERSPECTIVE, params)
'''
参数1：扭曲的范围
参数2：扭曲的样式
参数3：扭曲的参数
'''
# 进行扭曲
img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)

img.show()



